from time import time
from django.db import models
from django.db.models.expressions import F
from django.db.models.fields import CharField


# 小组表
class Group(models.Model):
    # 主键id
    id = models.AutoField(primary_key=True,verbose_name='序号')
    name = models.CharField(max_length=128,verbose_name='小组名')
    des = models.TextField(max_length=128,verbose_name='描述')
    imgUrl = models.TextField(max_length=256,verbose_name='封面')
    personNum = models.IntegerField(verbose_name='成员数',default=1)
# 用户表
class User(models.Model):
    # 用户字段
    # 设置主键id 
    id = models.AutoField(primary_key=True,verbose_name='序号')
    openID = models.CharField(max_length=128,verbose_name='open_id',null=False,default="")
    nickname = models.CharField(max_length=128,verbose_name='昵称')
    imgUrl = models.TextField(max_length=256,verbose_name='头像')
    # 小组外键,当指定的外键记录删除时,设置为Null
    groups = models.ManyToManyField('Group',verbose_name='所在小组')
    
# 计划表
class Plans(models.Model):
    # 主键id
    id = models.AutoField(primary_key=True,verbose_name='序号')
    color = models.CharField(max_length=128,verbose_name='颜色')
    name = models.CharField(max_length=128,verbose_name='名称')
    # 创建时选择的打卡总天数,默认七天
    Alldays = models.IntegerField(verbose_name='计划天数',default=7)
    # 设置每天打卡总次数,默认一次
    Seconds = models.IntegerField(verbose_name='次每天',default=1)
    # 已打卡xxx天
    doneDays = models.IntegerField(verbose_name='已打卡x天',default=0)
    # 今天已打卡x次
    doneSec = models.IntegerField(verbose_name='今日已打卡x次',default=0)
    # 修改时间
    # 是否打卡完成,默认False
    isdone = models.BooleanField(verbose_name='是否完成',default=False)

    # 外键：所属的用户,级联删除，用户注销时，自动删除本条记录
    user = models.ForeignKey(User,verbose_name='所属用户',on_delete=models.CASCADE)

# 动态表
class Dynamics(models.Model):
    # 主键id
    id = models.AutoField(primary_key=True,verbose_name='序号')
    # 内容
    content = models.TextField(verbose_name='动态内容',max_length=256)
    # 图片,可以为空
    imgs = models.TextField(max_length=512,verbose_name='图片字符串',default='')
    # 获得的赞,默认为0
    good = models.IntegerField(verbose_name='点赞量',null=False,default=0)
    # 外键 所属小组,级联删除
    group = models.ForeignKey(Group,verbose_name='所属小组',on_delete=models.CASCADE)
    # 外键 所属用户,级联删除
    user = models.ForeignKey(User,verbose_name='所属用户',on_delete=models.CASCADE)
